
#ifndef OGREINITSETTINGS_H
#define OGREINITSETTINGS_H

#include <Ogre.h>

class OgreInitializeSettings {

public:

	//general

	std::vector<Ogre::String>* subsystems;

	bool uselog;
	Ogre::String name;
	
	Ogre::String relative_path;
	Ogre::String config_file_dir; 
	Ogre::String plugin_file_dir;
	

	Ogre::String* manual_plugin_feed;
	short manual_plugin_feed_count;

	float METER;		//WE / Meter
	float METERTOWU;
	float METERSQR;

	//RenderWindow

	bool show_graphic_setting_dialog;
	short* window_size;
	bool window_fullsize;
	
	Ogre::String* graphic_setting_description;
	Ogre::String* graphic_setting_value;
	short graphic_setting_count;


	//Physics

	float gravity;
	Ogre::Vector3* bounds;


	//inputs

	bool capture_keyboard;
	bool capture_mouse;
	bool capture_joystick;

	float debug_camera_move_speed;
	float debug_camera_rotate_speed;	
	
	//MenuHandler

	int hintTimeout;
	Ogre::String stdfont;
	Ogre::String stdskin;

	//Soundsystem
		
	int max_sound_channel_count;
	float SPEED_OF_SOUND;
	float SQUARED_SPEED_OF_SOUND;

	//sound std-settings
	
	int		sound_min_distance;
	int		sound_max_distance;

	float	sound_pitch;
	float	sound_volume;
	float	sound_distance_effect_scale;
	float	sound_doppler_effect_scale;
	float	sound_rolloff_scale;
	

	//methods

	public:

		OgreInitializeSettings();
	OgreInitializeSettings(bool log,Ogre::String name,Ogre::String first_arg);

	~OgreInitializeSettings();

		void initStd();

	private:

		void initNull();
		
		Ogre::String getRelativePath(Ogre::String path);

};

#endif